package reflect;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ResourceBundle;

/**
 * 反射属性Field（字段 ）
 */
public class ReflectTest05 {
    public static void main(String[] args) throws ClassNotFoundException {
        ResourceBundle bundle = ResourceBundle.getBundle("classinfo2");//参数里把后缀名改掉
        String classname = bundle.getString("className");

        Class userClass = Class.forName(classname);

        //1 只是获取public修饰的类属性
        Field[] fields1 = userClass.getFields();
        System.out.println(fields1.length);//1
        Field f1 = fields1[0];
        System.out.println(f1.getName());//只有public修饰的age

        //2 获取所有属性
        Field[] fields2 = userClass.getDeclaredFields();
        System.out.println(fields2.length);//4
        for (Field f:fields2){
            System.out.println("***********************");
            //获取每一个属性的名字getName
            System.out.println(f.getName());

            //获得每一个属性的类型getType()
            // 返回值是class
            f.getType().getName();
            System.out.println(f.getType().getName());//Field的方法getType就获得每个参数的类型 但是返回值是class 所以就得调用calss的getName方法
            System.out.println(f.getType().getSimpleName());//java.lang.String变成String

            //获得每一个属性的修饰符;一个参数可以有多个修饰符
            //getModifiers 返回值是int 每一个数字是修饰符的代号
            //Modifierl类有一个静态方法 toString直接转成字符串
            int n=f.getModifiers();
            System.out.println(Modifier.toString(n));;//public static final

        }



    }

}
